package com.tiancheng.trade.settlement.model.settlement;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.tiancheng.trade.settlement.model.base.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import jakarta.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDate;

@Setter
@Getter
@ToString
public class MerchantContract extends BaseEntity {

    @NotBlank
    @JsonProperty("contract_code")
    private String contractCode;           // 机构编码/机构ID

    @NotBlank
    @JsonProperty("organization_code")
    private String organizationCode;           // 机构编码/机构ID

    @JsonProperty("organization_name")
    private String organizationName;           // 机构名称

    @NotBlank
    @JsonProperty("merchant_code")
    private String merchantCode;               // 商户编码/商户ID

    @JsonProperty("merchant_name")
    private String merchantName;               // 商户名称

    @JsonProperty("product_qty")
    private Integer productQty;               // 商品数量

    @NotBlank
    @JsonProperty("order_source")
    private String orderSource;               // 业务场景

    @TableField(exist = false)
    @JsonProperty("order_source_cn")
    private String orderSourceCn;               // 业务场景名称

    @NotBlank
    @JsonProperty("pay_channel")
    private String payChannel;               // 支付渠道

    @TableField(exist = false)
    @JsonProperty("pay_channel_cn")
    private String payChannelCn;               // 支付渠道名称

    @NotBlank
    @JsonProperty("amount")
    private BigDecimal amount;               // 预付额度

    @NotBlank
    @JsonProperty("invoice_type")
    private String invoiceType;               // 发票类型

    @TableField(exist = false)
    @JsonProperty("invoice_type_cn")
    private String invoiceTypeCn;               // 发票类型名称

    @NotBlank
    @JsonProperty("tax_rate")
    private BigDecimal taxRate;               // 税率

    @NotBlank
    @JsonProperty("contract_sign_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate contractSignDate;               // 合同签定日期

    @NotBlank
    @JsonProperty("contract_start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate contractStartDate;               // 合同起始时间

    @NotBlank
    @JsonProperty("contract_end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate contractEndDate;               // 合同终止时间

    @JsonProperty("huilianyi_no")
    private String huilianyiNo;               // 汇联易商户号

    @JsonProperty("remark")
    private String remark;                      //备注

    @JsonProperty("is_delete")
    private Integer isDelete;

}
